synchronous I/O emulation is completed.
Signed-off-by: Keir Fraser <keir@xensource.com>
{
struct hvm_virpit *vpit = &v->domain->arch.hvm_domain.vpit;
- if ( event_pending(v) )
+ if ( event_pending(v) ||
+ test_bit(ARCH_HVM_IO_WAIT, &v->arch.hvm_vcpu.ioflags) )
hvm_wait_io();
/* pick up the elapsed PIT ticks and re-enable pit_timer */
vmx_stts();
- if ( event_pending(v) )
+ if ( event_pending(v) ||
+ test_bit(ARCH_HVM_IO_WAIT, &v->arch.hvm_vcpu.ioflags) )
hvm_wait_io();
/* pick up the elapsed PIT ticks and re-enable pit_timer */